#!/usr/bin/python
# -*- coding: UTF-8 -*-

from kpautos.engine.case import Case
from kptest.config.enum import DeviceType, HostType, DeviceUtility


class BMC_SSH_04(Case):
    """
        Name:
            BMC_SSH_04
        Label:
            导出配置文件到本地
        PreCondition:
            1) BMC正常运行
        TestStep:
            1) 执行ipmcget -t config -d export -v /tmp/config.json，判断命令执行是否成功，有结果A）
            2) 查看/tmp目录是否有config.json文件，有结果B）
            3）删除/tmp/config.json
        ExpectedResult:
            A) 命令执行成功，返回结果中有”Export configuration successfully“。
            B）/tmp目录下有config.json文件。
        Parameters:

        Author:
            KT2001284
        Last Modified:
            2025-10-30
        Remark:

    """

    # 测试执行前配置等准备操作
    def pre_test_case(self):
        self.logger.info("Pre Test Case Start.... ")
        self.device_dut = self.resource.get_device(device_type=DeviceType.Server, utility=DeviceUtility.DUT)
        self.bmc_host = self.device_dut.get_host(host_type=HostType.BMC)
        self.bmc_cli_api = self.device_dut.get_api("KunTaiCli", api='kptest_extension_api', dispatcher=self.bmc_host)

    # 测试步骤
    def procedure(self):
        self.log_info("查看/tmp/config.json是否已存在")
        result = self.bmc_host.does_path_exist('/tmp/config.json')
        if result == True:
            self.logger.info("/tmp/config.json已存在，删除此文件")
            ret = self.bmc_host.delete_file('/tmp/config.json')
            if ret == None:
                raise Exception("删除/tmp/config.json失败")
        else:
            self.logger.info("无/tmp/config.json文件")

        self.log_step("Step1: 导出配置文件到/tmp目录")
        result = self.bmc_cli_api.export_config_local()
        if result == None:
            self.logger.info("导出配置文件命令执行失败")
        else:
            self.logger.info("导出配置文件命令执行成功")
        self.log_step("Step2: 查看/tmp/config.json已正确导出")
        result = self.bmc_host.does_path_exist('/tmp/config.json')
        if result == True:
            self.logger.info("/tmp/config.json已正确导出")
            ret = self.bmc_host.delete_file('/tmp/config.json')
            if ret == None:
                raise Exception("删除/tmp/config.json失败")
        else:
            raise Exception("导出配置文件/tmp/config.json失败，无此文件")


    # 测试结束后恢复环境
    def post_test_case(self):
        pass